home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1996 June / Software of the Month Club 1996 June.iso / mac / ISO9660 / DOS / DTP / AURORA / CLRCHART.AML < prev    next >
Text File  |  1995-02-24  |  4KB  |  130 lines

  1.  
  2. // ───────────────────────────────────────────────────────────────────
  3. // Simple color chart  2/2/94
  4. //
  5. // This external AML macro displays a color chart with color attribute
  6. // codes in decimal and hexidecimal. It can be helpful when configuring
  7. // COLOR.AML. To enter a color string (e.g. 'red on blue') in your text:
  8. //
  9. //   1. run this macro
  10. //   2. position the cursor to the desired color
  11. //   3. press <enter>
  12. //
  13. // An easy way to run this macro is to place it in your MACRO
  14. // subdirectory and select it from the macro picklist <shift f12>.
  15. // Don't forget to compile it first. To compile, press <shift f10>
  16. // when this source is displayed in an edit window.
  17. // ───────────────────────────────────────────────────────────────────
  18.  
  19.   include bootpath "define.aml"
  20.  
  21.   var foreground
  22.   var background
  23.  
  24.   // return the color name for a color attribute
  25.   function attrname (attr)
  26.     case attr
  27.       when  0 "black"       when  8 "darkgray"
  28.       when  1 "blue"        when  9 "brightblue"
  29.       when  2 "green"       when 10 "brightgreen"
  30.       when  3 "cyan"        when 11 "brightcyan"
  31.       when  4 "red"         when 12 "brightred"
  32.       when  5 "magenta"     when 13 "brightmagenta"
  33.       when  6 "brown"       when 14 "yellow"
  34.       when  7 "gray"        when 15 "white"
  35.     end
  36.   end
  37.  
  38.   // create the color chart window
  39.   createwindow
  40.   setwinobj
  41.   setframe ">b"
  42.   setcolor  border_color   color gray  on black
  43.   setcolor  text_color     color black on gray
  44.   settitle "Color Chart - press <enter> to select"
  45.   setwinctrl '≡'
  46.   sizewindow 27 4 74 20 "ad"
  47.   setborder "1f"
  48.   setcolor  text_color  color black on black
  49.  
  50.   // draw the color chart
  51.   while foreground < 16 do
  52.     while background < 16 do
  53.       writestr " A "  background * 16 + foreground
  54.       background = background + 1
  55.     end
  56.     writeline
  57.     background = 0
  58.     foreground = foreground + 1
  59.   end
  60.  
  61.   foreground = 0
  62.   background = 0
  63.   showcursor 50 99
  64.  
  65.   loop
  66.     attr = foreground + background * 16
  67.     colorstring = (attrname foreground) + ' on ' + (attrname background)
  68.  
  69.     // write color info at the bottom of the chart
  70.     writestr '[dec=' + attr + ',hex=' + (base attr 16) + '] ' +
  71.               colorstring + "                "
  72.              (color gray on black) 2 17
  73.  
  74.     // move the cursor to the appropriate color cell
  75.     x = background * 3 + 2
  76.     gotoxy x foreground + 1
  77.  
  78.     // write the bracket [ ] cursor
  79.     attr = (if? background > brightblue black white) + background * 16
  80.     writestr '[' attr  x - 1
  81.     writestr ']' attr  x + 1
  82.     gotoxy x foreground + 1
  83.  
  84.     // display the window and get the next key
  85.     keycode = getkey
  86.  
  87.     // clear the bracket cursor
  88.     writestr " A "  foreground + background * 16   x - 1
  89.  
  90.     case keycode
  91.  
  92.       // exit the chart
  93.       when <esc>
  94.         break
  95.  
  96.       // mouse click
  97.       when <button>
  98.         case getregion
  99.           // client area
  100.           when 1
  101.             if virtorow <= 16 then
  102.               foreground = (virtorow - 1) mod 16
  103.             end
  104.             background = (virtocol - 1) / 3
  105.           // close icon
  106.           when 51
  107.             break
  108.         end
  109.  
  110.       // enter the color description in an edit window and exit
  111.       when <enter>
  112.         queue "write" colorstring
  113.         break
  114.  
  115.       // move the cursor around in the chart
  116.       when <left>
  117.         background = if? background (background - 1) 15
  118.       when <right>
  119.         background = (background + 1) mod 16
  120.       when <up>
  121.         foreground = if? foreground (foreground - 1) 15
  122.       when <down>
  123.         foreground = (foreground + 1) mod 16
  124.     end
  125.   end
  126.  
  127.   // destroy the color chart window
  128.   destroywindow
  129.  
  130.